using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using TestImport.View.BeherenBestanden;


namespace TestImport
{
    public partial class LeerlingenBeheren : TestImport.SuperDataView
    {
        private Boolean isnew = true;
        private DataView dv;
        private String vGroepCode;

        public LeerlingenBeheren()
        {
            InitializeComponent();
            //this.BackColor = InstParameters.Default.schermkleur;
        }

        
        private void leerlingBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.leerlingBindingSource.EndEdit();
            this.leerlingTableAdapter.Update(this.onsBoekenPakketDataSet.Leerling);

        }

        private void LeerlingenBeheren_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Groep' table. You can move, or remove it, as needed.
            this.groepTableAdapter.Fill(this.onsBoekenPakketDataSet.Groep);
            // TODO: This line of code loads data into the 'onsBoekenPakketDataSet.Leerling' table. You can move, or remove it, as needed.
            this.leerlingTableAdapter.Fill(this.onsBoekenPakketDataSet.Leerling);
            leerlingBindingSource.Sort = "Naam ASC";
            gbFilter.Text = "Alle leerlingen alfabetisch geordend";
            this.WindowState = FormWindowState.Maximized;

        }

        private void btnSorteer_Click(object sender, EventArgs e)
        {
            this.leerlingBindingSource.RemoveFilter();
            leerlingBindingSource.Sort = "GroepCode ASC,Naam ASC";
            gbFilter.Text = "Alle leerlingen alfabetisch geordend per groep";
        }

        private void txtBegin_TextChanged(object sender, EventArgs e)
        {
            String text = txtBegin.Text.Replace("\'", "\'\'");
            this.leerlingBindingSource.Filter = "Naam like " + "'" + text + "%\'";
            if (text.Length == 0)
                gbFilter.Text = "Alle leerlingen";
            else
                gbFilter.Text = "Leerlingen waarvan de naam begint met " + text.ToUpper();
        }

        private void txtDeel_TextChanged(object sender, EventArgs e)
        {
            // filter deel van leerlingnaam
            String text = txtDeel.Text.Replace("\'", "\'\'");
            this.leerlingBindingSource.Filter = ("Naam like \'%" + (text + "%\'"));
            if (text.Length == 0)
                gbFilter.Text = "Alle leerlingen";
            else
                gbFilter.Text = "Leerlingen waarvan " + text.ToUpper() +" voorkomt in de naam";
        }

        private void txtDeelAlle_TextChanged(object sender, EventArgs e)
        {
            // filter op alle kolommen
            String text = txtDeelAlle.Text.Replace("\'", "\'\'");
            this.leerlingBindingSource.Filter = ("Straat like \'%" + text + "%\' OR Gemeente like \'%"  + text + "%\'");
            if (text.Length == 0)
                gbFilter.Text = "Alle leerlingen";
            else
                gbFilter.Text = "Leerlingen waarvan " + text.ToUpper() + " voorkomt in de straat of gemeente";
        }

        private void switchButtonModus()
        {
            Nieuw.Enabled = !Nieuw.Enabled;
            Wijzig.Enabled = !Wijzig.Enabled;
            Wis.Enabled = !Wis.Enabled;
            Registreer.Enabled = !Registreer.Enabled;
            RegistreerEnNieuw.Enabled = !RegistreerEnNieuw.Enabled;
            Annuleer.Enabled = !Annuleer.Enabled;
            this.leerlingDataGridView.Enabled = !this.leerlingDataGridView.Enabled;
        }

        private void switchEnabledModus()
        {
            txtNaam.ReadOnly = !txtNaam.ReadOnly;
            txtAdminCode.ReadOnly = !txtAdminCode.ReadOnly;
            txtGeboorteDatum.ReadOnly = !txtGeboorteDatum.ReadOnly;
            txtStraat.ReadOnly = !txtStraat.ReadOnly;
            txtGemeente.ReadOnly = !txtGemeente.ReadOnly;
            cmbGroep.Enabled = !cmbGroep.Enabled;
        }

        private void Nieuw_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            this.leerlingBindingSource.AddNew();
            cmbGroep.SelectedIndex = 0;
            isnew = true;
        }

        private void Wijzig_Click(object sender, EventArgs e)
        {
            this.switchEnabledModus();
            this.switchButtonModus();
            isnew = false;
        }

        private void Wis_Click(object sender, EventArgs e)
        {
            string naam = leerlingDataGridView.CurrentRow.Cells["dgvNaam"].Value.ToString();
            int vLeerlingID = int.Parse(leerlingDataGridView.CurrentRow.Cells["dgvLeerlingID"].Value.ToString());
            bool magWissen = true;
            if (int.Parse(leerlingBoek_Leerling_BoekTableAdapter.CountByLeerlingID(vLeerlingID).ToString()) > 0)
            {
                magWissen = false;
                MessageBox.Show("Wissen van leerling " + naam + " niet toegestaan!!!. Voor deze leerling zijn er reeds bestellingen!!!", "WISSEN NIET TOEGESTAAN!!");
            }
            if (magWissen)
            {
                DialogResult result = DialogResult.No;
                result = MessageBox.Show("Wens je leerling " + naam + " te wissen?", "Leerling wissen?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    leerlingBindingSource.RemoveCurrent();
                    leerlingBindingSource.EndEdit();
                    this.leerlingTableAdapter.Update(this.onsBoekenPakketDataSet.Leerling);
                }
            }
            isnew = true;
        }

        private void Registreer_Click(object sender, EventArgs e)
        {
            DialogResult result = DialogResult.No;
            if (isnew)
                result = MessageBox.Show("Nieuwe leerling registreren?", "Registreren nieuwe leerling?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            else
                result = MessageBox.Show("Leerling gegevens wijzigen?", "Registreren gewijzigde leerling?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            if (result == DialogResult.Yes)
            {
                if (IsValide())
                {
                    try
                    {
                        if (isnew == false && !(cmbGroep.SelectedValue.ToString().Equals(leerlingDataGridView.CurrentRow.Cells["groepIDColumn"].Value)))
                        {
                            int vLeerlingID = int.Parse(leerlingDataGridView.CurrentRow.Cells["dgvLeerlingID"].Value.ToString());
                            string vnaam = leerlingDataGridView.CurrentRow.Cells["dgvNaam"].Value.ToString();
                            string vstraat = leerlingDataGridView.CurrentRow.Cells["dgvstraat"].Value.ToString();
                            string vgemeente = leerlingDataGridView.CurrentRow.Cells["dgvGemeente"].Value.ToString();
                            string vLeerlingInfo = vnaam.ToUpper() + " (" + vstraat + " " + vgemeente + ") GROEP:" + vGroepCode;
                            LeerlingGroepVerandering lgv = new LeerlingGroepVerandering(vLeerlingInfo, vLeerlingID, cmbGroep.SelectedValue.ToString(), vGroepCode,true);
                            if (lgv.getAantalTransacties() > 0)
                                lgv.ShowDialog();
                        }




                        this.leerlingDataGridView.CurrentRow.Cells["groepIDColumn"].Value = this.cmbGroep.SelectedValue.ToString();
                        this.leerlingBindingSource.EndEdit();
                        this.leerlingTableAdapter.Update(this.onsBoekenPakketDataSet.Leerling);
                        this.switchEnabledModus();
                        this.switchButtonModus();
                        this.leerlingDataGridView.Refresh();
                    }
                    catch (Exception ex) { ;}
                }
            }   
            else
            {
                this.leerlingBindingSource.CancelEdit();
                this.switchEnabledModus();
                this.switchButtonModus();
            }
            isnew = true;
        }

        private void Annuleer_Click(object sender, EventArgs e)
        {
            if (isnew)
            {
                this.leerlingBindingSource.RemoveCurrent();
            }
            else
            {
                this.leerlingBindingSource.CancelEdit();
            }
            errorProvider1.Clear();
            this.switchEnabledModus();
            this.switchButtonModus();
            isnew = true;
        }

        

        private void groepComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            /*leerlingBindingSource.Sort = "GroepCode ASC,Naam ASC";
            String text = cmbGroepsCode.Text.Replace("\'", "\'\'");
            this.leerlingBindingSource.Filter = "GroepCode like " + "'" + text + "%\'";
            gbFilter.Text = "Leerlingen van groep " + text.ToUpper();
            */
            try
            {
                string code = cmbGroepsCode.SelectedValue.ToString();
                leerlingBindingSource.Filter = "groepCode = " + "'" + code + "'";
                gbFilter.Text = "Leerlingen van groep " + code.ToUpper();
            }
            catch (Exception ex) { ;}
        }

        private void leerlingDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            /* Zet een datumveld bij het tonen altijd om naar 10 tekens
            bool formateer = false;
            if (this.leerlingDataGridView.Columns[e.ColumnIndex].Name == "dataGridViewgeboorteDatum")
            {
                if (e.Value != null )
                {
                    try
                    {
                        string stringValue = (string)e.Value;
                        //dag met 1 cijfer
                        if (stringValue.IndexOf('/') < 2)
                        {
                            stringValue = "0" + stringValue;
                            formateer = true;
                        }
                        //maand met 1 cijfer
                        if (stringValue.Length < 10)
                        {
                            stringValue = stringValue.Substring(0, 3) + "0" + stringValue.Substring(3);
                            formateer = true;
                        }
                        if (formateer)
                        {
                            e.Value = stringValue;
                            e.FormattingApplied = true;
                            e.CellStyle.BackColor = Color.Pink;
                        }
                    }
                    catch (Exception ex) { }
                 }
            }
            */
        }

        private bool IsValide()
        {
            bool terug,terug1 = false;
            DateTime d;
            if (!txtGeboorteDatum.Text.Equals(DBNull.Value.ToString()))
            {
                bool res = DateTime.TryParse(txtGeboorteDatum.Text, out d);
                if (!res)
                {
                    this.errorProvider1.SetError(this.txtGeboorteDatum, "Foutieve datum!!!");
                    terug = res;
                }
                else
                {
                    this.errorProvider1.SetError(this.txtGeboorteDatum, "");
                    terug = res;
                }
            }
            else terug = true;
            //Om te testen op meerdere fouten Dummy test
            if (this.cmbGroep.Text=="MM")
            {
                this.errorProvider1.SetError(this.cmbGroep, "Foutieve groep!!!");
                terug1 = false;
            }
            else
            {
                this.errorProvider1.SetError(this.cmbGroep, "");
                terug1 = true;
            }
            return terug && terug1;
        }

        private void RegistreerEnNieuw_Click(object sender, EventArgs e)
        {
            this.Registreer_Click(sender, e);
            if (IsValide())
                this.Nieuw_Click(sender, e);
        }

        private void leerlingDataGridView_SelectionChanged(object sender, EventArgs e)
        {
            isnew = true;
            try
            {
                vGroepCode = leerlingDataGridView.CurrentRow.Cells["groepIDColumn"].Value.ToString();
                cmbGroep.SelectedValue = leerlingDataGridView.CurrentRow.Cells["groepIDColumn"].Value.ToString();
            }
            catch (Exception ex) { ;}
        }

        private void cmbGroep_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }
        
        

        
    }
}

